<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>监视属性</title>
    <!--引入Vue-->
    <script type="text/javascript" src="./js/vue.js"></script>
</head>

<body>
    <!--深度监视
    （1）vue中的watch默认不监测对象内部的改变
    （2）配置deep:true 可以监视对象内部值改变
    （3）Vue自身可以监视对象内部值得改变，但vue提供的watch默认不可以
    （4）使用watch时根据数据的具体结构，决定是否采用深度监视
-->

    <div id="root">
        <P>今天下去很{{info}}</P>
        <button @click="changeState">切换天气</button>


        <P>a值{{numbers.a}}</P>
        <button @click="numbers.a++">dianwo</button>


        <P>B值{{numbers.b}}</P>
        <button @click="numbers.b++">dianwo</button>


    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                total: true,
                numbers: {
                    a: 1,
                    b: 2

                }
            },
            computed: {
                info: function() {
                    return this.total ? "炎热" : "晾爽"
                }
            },
            methods: {
                changeState() {
                    //  console.log(this)
                    this.total = !this.total
                },



            },

            watch: {
                //深度监视 原生jS中对象的属性名可以写成字符串，而这块要写成字符串

                //监视多级结构中某个属性的变化
                // 'numbers.a': {
                //     handler() {

                //         console.log("numbers-a被改变了")
                //     }
                // },
                // 'numbers.b': {
                //     handler() {
                //         console.log("numbers-b被改变了")
                //     }
                // },

                //监视多级结构中所有属性的变化需要加deep:true
                numbers: {
                    deep: true,
                    handler() {
                        console.log("numbers.被改变了")
                    }
                }

            }

        })
    </script>


</body>

</html>